const db = wx.cloud.database()
Page({
  data: {
    news:[],
    result:'',
    comment:[],
    picked: true,
    info:[]
  },
  pageNumber: { skip: 0 },

  getData(req,callback){
    this.data.openid = wx.getStorageSync('openID')
    wx.showLoading({
      title: '正努力加载数据',
    })
    // res =>{}声明一个函数，传入res作为参数
    
    req.skip(this.pageNumber.skip).get().then(res => {
      let oldData = this.data.news
      // setData依然会修改js里面的news变量，this.data的变量也是js文件全局
      this.setData({ news: oldData.concat(res.data) ,openid:this.data.openid})
      this.pageNumber.skip += 20
      res => {
        callback
      }
      wx.hideLoading()
    })
  },

  getInfo(req, callback) {
    this.data.openid = wx.getStorageSync('openID')
    wx.showLoading({
      title: '正努力加载数据',
    })
    // res =>{}声明一个函数，传入res作为参数

    req.skip(this.pageNumber.skip).get().then(res => {
      let oldData = this.data.info
      // setData依然会修改js里面的news变量，this.data的变量也是js文件全局
      this.setData({ info: oldData.concat(res.data), openid: this.data.openid })
      this.pageNumber.skip += 20
      res => {
        callback
      }
      wx.hideLoading()
    })
  },

  onLoad: function (options) {
    this.data.openid = wx.getStorageSync('openID')
    // 作为消息发送者时，收到的信息
    this.data.result = db.collection('school-request').where({
      _openid: this.data.openid
    }).orderBy('date', 'desc')
    this.getData(this.data.result)
    
    // 作为评论者时，收到的信息
    this.data.information = db.collection('news').where({
      acceptor: this.data.openid
    }).orderBy('date', 'desc')
    this.getInfo(this.data.information)

  },

// onshow 能够实现数据的实时更新
  onShow: function(){
    wx.hideTabBarRedDot({
      index: 1,
    }) 
    var openid = wx.getStorageSync('openID')
    var referID = wx.getStorageSync('referID')
    var x
    // 加个条件分支，减少对数据库的读写
    if (referID){
      for (x in referID) {
        db.collection('school-request').doc(referID[x]).update({
          data: {
            refer: false
          }
        })
      } 
      wx.setStorageSync('referID', []) 
    }
    // 更新被评论的数据
    if (wx.getStorageSync('subComment') != wx.getStorageSync('oldSubComment')) {
      wx.setStorageSync('oldSubComment', wx.getStorageSync('subComment'))
    }
  },

  // 传数据给组件最好不要用id字段，否则不会生效
  delitems: function (e) {
    wx.showModal({
      title: '提示',
      content: '你确定要删除这条消息记录吗？',
      success:res=>{
        if (res.confirm) {
          wx.showLoading({
            title: '正在删除……',
          })
          var id = e.currentTarget.dataset.id
          var index = e.currentTarget.dataset.index
          var data = this.data.news
          var x // x这个用于遍历数组的元素，也要事先声明为变量才行。
          for (x in data) {
            if (id == data[x]._id) {
              data[x].comment[index].push('abandon')
              wx.cloud.callFunction({
                name: 'comments',
                data: {
                  pageID: id,
                  comment: data[x].comment
                },
                // 使用setData及时更新视图层数据就好了，不用想那么复杂
                success: res => {wx.reLaunch({
                  url: '/pages/news/news',
                }) }
              })
            }
          }
          wx.hideLoading()
        }
      }
    })
  },

  delsubitems: function (e) {
    wx.showModal({
      title: '提示',
      content: '你确定要删除这条消息记录吗？',
      success:res=>{
        if(res.confirm){
          wx.showLoading({
            title: '正在删除……',
          })
          var id = e.currentTarget.dataset.id
          var index = e.currentTarget.dataset.index
          var subindex = e.currentTarget.dataset.subindex
          var data = this.data.news
          var x // x这个用于遍历数组的元素，也要事先声明为变量才行。
          for (x in data) {
            if (id == data[x]._id) {
              data[x].comment[index][6][subindex].push('abandon')
              console.log(data[x].comment[index][6][subindex])
              wx.cloud.callFunction({
                name: 'comments',
                data: {
                  pageID: id,
                  comment: data[x].comment,
                  success: res => {
                     },
                  fail: res=>{console.error}  
                }
              })
              wx.reLaunch({
                url: '/pages/news/news',
              })
            }
          }
          wx.hideLoading()
        }
      }
    })
    
  },

  deleteInfo:function(e) {
    wx.showModal({
      title: '提示',
      content: '你确定要删除这条消息记录吗？',
      success:res=>{
        if(res.confirm){
          wx.showLoading({
            title: '正在删除……',
          })
          var id = e.currentTarget.dataset.id
          wx.cloud.callFunction({
            name: 'deleteNews',
            data: {
              id: id
            },
            success: res => {
              wx.hideLoading()
              wx.reLaunch({
                url: '/pages/news/news',
              })
            }
          })
        }
      }
    })  
  },

// 需要先在json配置文件声明 "enablePullDownRefresh": true，才能被调用
// 不引用其它函数，直接读写数据库才能实现刷新效果
  onPullDownRefresh: function () {
    wx.showLoading({
      title: '正努力加载数据',
    })
    db.collection('school-request').where({
      _openid: this.data.openid
    }).orderBy('creatTime', 'desc').get()
      .then(res => {
        console.log(res.data)
        let oldData = []
        this.setData({ news: oldData.concat(res.data), openid: this.data.openid 
      })
    })
    wx.hideLoading()
    wx.stopPullDownRefresh()
  },

  onReachBottom: function () {
    // 不知道为什么this.data.result是正确的，但是传入getData()后，就变成undefined了。所以只好换一个变量了
    var result = this.data.result
    this.getData(result)
  },
})